<template>
  <div>
    <UploadExcel :on-success="onSuccess" />
  </div>
</template>

<script>
import { importEmployee } from '@/api/employees'
export default {
  methods: {
    async onSuccess(data) {
      // 这个函数作为成功的回调传入了子组件
      // 每当上传excel加载完毕时,就能够在这获取到数据data
      // 其中 data.header 是表头,data.results 是结果数组
      // [
      // {姓名:高大山,工号:10001},
      // {姓名:高大山,工号:10001},
      // {姓名:高大山,工号:10001},
      // ]
      console.log('翻译前', data.results)
      const dict = {
        '入职日期': 'timeOfEntry',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber'
      }
      // 我们希望在这对获取到的数据进行处理,每个中文的key 翻译成英文
      const newData = data.results.map(user => {
        // 拿到员工对象 user 逐个 key 翻译 即可
        // 我希望能够将每个旧的中文key用户翻译成一个新的英文key用户返回
        const newUser = {}
        for (const key in user) {
          // key==='姓名' 翻译 fict[key]=>username
          // value值一个从旧数据里面取 user[key] =>高大山
          const newKey = dict[key] // username
          let value = user[key] // 高大山
          if (newKey === 'timeOfEntry' || newKey === 'correctionTime') {
            // 调用工具函数转换成字符串, 然后 new Date 转换成日期对象
            const timeStr = this.formatExcelTime(value)
            // value = new Date(timeStr)
            value = timeStr
            // console.log(timeStr)格式是我们需要的
          }
          // console.log(value)
          newUser[newKey] = value
        }
        return newUser
      })
      console.log('翻译后', newData)
      // 发送请求批量导入
      await importEmployee(newData)
      // 提示用户成功
      this.$message.success('导入成功')
      // 后退回上一页
      this.$router.back()
    },
    // 专门处理 excel 时间问题工具
    formatExcelTime(num, format = '-') {
      num = Number(num)	// 强制类型转化，以防传来的值是字符串
      let millisecond = 0	// 转化后的毫秒数
      if (num > 60) {
        millisecond = (num - 25569) * 60 * 60 * 24 * 1000
      } else {
        millisecond = (num - 25568) * 60 * 60 * 24 * 1000
      }
      const date = new Date(millisecond)	// 根据转化后的毫秒数获取对应的时间
      const yy = date.getFullYear()
      const mm = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
      const dd = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
      return yy + format + mm + format + dd	// 返回格式化后的日期字符串
    }
  }
}
</script>

<style>

</style>
